<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8" />
		<title>8.Promise基础知识</title>
	</head>
	<body>
		<!-- 
				Promise相关知识
						1.三种状态（pending、fulfilled、rejected），两个回调（成功的回调、失败的回调）
						2.then处理:成功与失败，catch处理:失败。
						3.then的返回值有规律！规律很重要！！！—— 链式调用。
							then的返回值是多少，是由then所指定的：成功回调  或  失败回调 而定。
								① 若返回的是非Promise值（例如：NaN、1、'abc'、undefined、null等等）都算成功。
								② 若返回的是Promsie值，则then的返回值与该Promise值保持同步。
						4.一些API：
								Promise.all([p1,p2,p3])
											接收一个由Promise实例组成的数组，数组中实例都成功，Promise.all的返回值才成功。
											只要有一个失败，Promise.all的返回值就失败
								Promise.resolve()
											用于快速返回一个成功状态的Promise实例
								Promise.reject()
											用于快速返回一个失败状态的Promise实例
								Promise.race([p1,p2,p3])
											接收一个由Promise实例组成的数组，Promise.race的返回值要看最先有结果的那个Promise实例。
											例如：p2是最先有结果的，且为成功，那么Promise.race的返回值就是成功的。

						5.新语法：async、await 
									为什么要使用：async、await ？ ——  可以让编码更优雅。

		 -->
		<script type="text/javascript" >
			let p1 = new Promise((resolve,reject)=>{
				setTimeout(()=>{
					reject(666)
				},1000)
			})

			let p2 = p1.then(
				value => {console.log('成功了1',value)},
				reason => {
					console.log('失败了1',reason); 
					return new Promise((resolve,reject)=>{reject(999)})
				}
			)

			p2.then(
				value => {console.log('成功了2',value)},
				reason => {console.log('失败了2',reason)}
			)
		</script>
	</body>
</html>